package com.stars.common.maps;

import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * @author alex
 * @version 1.0.0
 * @description 使用Gson把json字符串转成Map
 * @date 2016年12月20日 上午11:32:12
 * @note 注意事项
 */
public class JsonToMapUtils {

    /**
     * @param json
     * @return
     * @description 获取JsonObject
     * @author alex
     * @date 2016年12月20日 上午11:32:21
     * @version 1.0.0
     */
    public static JsonObject parseJson(String json) {
        JsonParser parser = new JsonParser();
        JsonObject jsonObj = parser.parse(json).getAsJsonObject();
        return jsonObj;
    }

    /**
     * 将传入的json字符串解析为Map集合
     *
     * @param jsonStr
     * @return
     */
    public static Map<String, String> jsonToMap(String jsonStr) {
        Gson gson = new Gson();
        Map<String, String> strMap = null;
        java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<String, String>>() {}.getType();
        strMap = gson.fromJson(jsonStr, type);
        return strMap;
    }

    /**
     * 将传入的json字符串解析为Map集合
     *
     * @param jsonStr
     * @return
     */
    public static Map<String, Object> jsonToMapObject(String jsonStr) {
        Map<String, Object> ObjectMap = null;
        Gson gson = new Gson();
        java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<String, Object>>() {}.getType();
        ObjectMap = gson.fromJson(jsonStr, type);
        return ObjectMap;
    }
    /** 
     * @Description: Json to MAP
     * @Param: [map]
     * @return: java.lang.String
     * @Author: dj
     * @Date: 2019/10/25
     */ 
    public static String mapToJson(Map<String,Object> map){
        JSONObject json = new JSONObject(map);
        return json.toJSONString();
    }
    
    public static Map<String,Object> jsonToMapJSONObject(String jsonStr){
        if(StringUtils.isBlank(jsonStr)){
            return null;
        }
        JSONObject json = JSONObject.parseObject(jsonStr);
        Map<String, Object> map = json;
        return map;
    }

    public static boolean isJson(String content) {
        try {
            Gson gson = new Gson();
            java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<String, Object>>() {}.getType();
            gson.fromJson(content,type);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}
